package co.inventario.presentacion;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import co.inventario.entidad.EmpleadoDTO;
import co.inventario.modelo.fachada.EmpleadoFachada;

@ManagedBean
public class EmpleadoBean {

	private EmpleadoDTO empleadoDTO;
	private ArrayList<EmpleadoDTO> empleadoDTOlista;
	private List<EmpleadoDTO> empleadoFilter;

	public EmpleadoDTO getEmpleadoDTO() {
		return empleadoDTO;
	}

	public void setEmpleadoDTO(EmpleadoDTO empleadoDTO) {
		this.empleadoDTO = empleadoDTO;
	}

	public ArrayList<EmpleadoDTO> getEmpleadoDTOlista() {
		return empleadoDTOlista;
	}

	public void setEmpleadoDTOlista(ArrayList<EmpleadoDTO> empleadoDTOlista) {
		this.empleadoDTOlista = empleadoDTOlista;
	}

	public List<EmpleadoDTO> getEmpleadoFilter() {
		return empleadoFilter;
	}

	public void setEmpleadoFilter(List<EmpleadoDTO> empleadoFilter) {
		this.empleadoFilter = empleadoFilter;
	}

	public void refrescarTablaEmpleados() {
		try {
			EmpleadoFachada empleadoFachada = new EmpleadoFachada();
			empleadoDTOlista = empleadoFachada.consultarTodo();
		} catch (Exception exception) {
			System.out.println("Error producido al consultar los empleados en el Bean: " + exception.getMessage());
		}
	}

	public EmpleadoBean() {
		empleadoDTO = new EmpleadoDTO();
		refrescarTablaEmpleados();
	}

	public void crear() {
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			if (empleadoDTO.getNvIdentificacionEmpleado() == null || "".equals(empleadoDTO.getNvIdentificacionEmpleado().trim())) {
				context.addMessage(null, new FacesMessage("Error", "El campo no puede estar vacio"));
			}
			if (empleadoDTO.getNvPrimerNombreEmpleado() == null || "".equals(empleadoDTO.getNvPrimerNombreEmpleado().trim())) {
				context.addMessage(null, new FacesMessage("Error", "El campo no puede estar vacio"));
			}
			if (empleadoDTO.getNvPrimerApellidoEmpleado() == null || "".equals(empleadoDTO.getNvPrimerNombreEmpleado().trim())) {
				context.addMessage(null, new FacesMessage("Error", "El campo no puede estar vacio"));
			}
			if (empleadoDTO.getNvCelularEmpleado() == null || "".equals(empleadoDTO.getNvCelularEmpleado().trim())) {
				context.addMessage(null, new FacesMessage("Error", "El campo no puede estar vacio"));
			}
			if (empleadoDTO.getNvCorreoEmpleado() == null || "".equals(empleadoDTO.getNvCorreoEmpleado().trim())) {
				context.addMessage(null, new FacesMessage("Error", "El campo no puede estar vacio"));
			} else {
				EmpleadoFachada empleadoFachada = new EmpleadoFachada();
				empleadoFachada.crear(empleadoDTO);
				refrescarTablaEmpleados();
				context.addMessage(null, new FacesMessage("succesfull", "el campo se ha creado con exito : " + empleadoDTO.getNvIdentificacionEmpleado()));
			}
		} catch (Exception exc) {
			context.addMessage(null, new FacesMessage("Error", "se ha producido un error - el error es  : " + exc.getMessage()));
		}
	}

	public void consultartodo() {
		FacesContext contexto = FacesContext.getCurrentInstance();
		try {
			if (empleadoDTO.getNvIdentificacionEmpleado() == null) {
				contexto.addMessage(null, new FacesMessage("Error", "El campo no puede estar vacio"));
			}
			if (empleadoDTO.getNvPrimerNombreEmpleado() == null) {
				contexto.addMessage(null, new FacesMessage("Error", "El campo no puede estar vacio"));
			}
			if (empleadoDTO.getNvPrimerApellidoEmpleado() == null) {
				contexto.addMessage(null, new FacesMessage("Error", "El campo no puede estar vacio"));
			}
			if (empleadoDTO.getNvCelularEmpleado() == null) {
				contexto.addMessage(null, new FacesMessage("Error", "El campo no puede estar vacio"));
			}
			if (empleadoDTO.getNvCorreoEmpleado() == null) {
				contexto.addMessage(null, new FacesMessage("Error", "El campo no puede estar vacio"));
			} else {
				refrescarTablaEmpleados();
			}
		} catch (Exception excepcion) {
			contexto.addMessage(null, new FacesMessage("Error", "Se ha producido un error al consultar el registro: " + excepcion.getMessage()));
		}
	}

	public void actualizar() {
		FacesContext contexto = FacesContext.getCurrentInstance();
		try {
			EmpleadoFachada empleadoFachada = new EmpleadoFachada();
			empleadoFachada.actualizar(empleadoDTO);
			refrescarTablaEmpleados();
			contexto.addMessage(null, new FacesMessage("succesfull", "el campo se ha Actualizado con exito : " + empleadoDTO.getNvPrimerNombreEmpleado()));
		} catch (Exception excepcion) {
			contexto.addMessage(null, new FacesMessage("Error", "Se ha producido un error al consultar el registro: " + excepcion.getMessage()));
		}
	}
}
